package com.myk.game.heroscuffle.events;

import com.myk.game.heroscuffle.game.Hero;

/**
 * 英雄事件基础类
 */
public class HeroEventBase{

    private HeroEventListener<? extends HeroEventBase> heroEventListener; //触发这个事件的被观察者
    private EventRunBack<? extends HeroEventBase> heroEventRunBack; //触发这个事件的观察者
    protected Hero hostHero; //这个英雄事件的宿主

    protected HeroEventBase(Hero host) {
        this.hostHero = host;
    }

    /**
     * 传入产生这个事件的监听器和回调对象，可以方便以后的各种神奇操作
     */
    public void setListenerAndRunBack(HeroEventListener<? extends HeroEventBase> listener, EventRunBack<? extends HeroEventBase> runBack) {
        this.heroEventListener = listener;
        this.heroEventRunBack = runBack;
    }

    /**
     * 将触发这个事件的回调对象RunBack从它所在的Listener列表中移除，
     * 以后不会再监听这个事件了
     */
    public void removeRunBackFromListener() {
        heroEventListener.removeRunBack(heroEventRunBack);
    }


}
